package org.example.encrypt.utils;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.edianzu.org.annotations.CryptField;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import lombok.extern.slf4j.Slf4j;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 加解密过程中需要的工具方法
 *
 * @Author WeiBing
 * @Create 2024/8/20 18:51
 */
@Slf4j
public class CryptUtil {

    /**
     * 把参数名的下划线写法转换成小驼峰的写法
     */
    public static String convertToCamelCaseIfNecessary(String input) {
        // 如果输入字符串为空或者没有下划线，直接返回原字符串
        if (StrUtil.isBlank(input) || !input.contains("_")) {
            return input;
        }

        StringBuilder result = new StringBuilder();
        boolean nextUpperCase = false;

        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (c == '_') {
                // 下一个字符应该大写
                nextUpperCase = true;
            } else if (Character.isLetter(c)) {
                if (nextUpperCase) {
                    // 将下划线后的字符转换为大写
                    result.append(Character.toUpperCase(c));
                    nextUpperCase = false;
                } else {
                    // 其他字符保持原样
                    result.append(Character.toLowerCase(c));
                }
            } else {
                // 非字母字符直接添加到结果中
                result.append(c);
            }
        }

        return result.toString();
    }

    /**
     * 获取SQL中字段名和字段取值的映射表
     * 正则表达式，用于匹配如下形式：形如：
     * 1. phone = #{ew.paramNameValuePairs.MPGENVAL1}
     * 2. identity_card_number NOT IN (#{ew.paramNameValuePairs.MPGENVAL1},#{ew.paramNameValuePairs.MPGENVAL2})
     * 3. identity_card_number IN (#{ew.paramNameValuePairs.MPGENVAL1},#{ew.paramNameValuePairs.MPGENVAL2}))
     * 4. status <> #{ew.paramNameValuePairs.MPGENVAL2}
     * 5. status != #{ew.paramNameValuePairs.MPGENVAL2}
     * 目前我只支持这5种模式，啥>,<之类的一律不考虑。其实说白了，我只支持精准查询这种：(=)(!=)(<>)(in)(not in)
     *
     * 得到的结果是这种形式的：
     * key:phone
     * value:[MPGENVAL1,MPGENVAL2]
     */
    public static Map<String, List<String>> extractParamsToPlaceholders(String sql, Set<String> sensitiveFieldNames) {
        if (StrUtil.isBlank(sql)) {
            return Collections.emptyMap();
        }

        Map<String, List<String>> mappings = new HashMap<>();
        // 处理= 和 !=
        if (StrUtil.contains(sql, "=")) {
            // debug过程中发现sqlSet和sqlSegment里格式不统一，后者=号前后有空格，前者又没有，麻痹的，那用s*
            Pattern pattern = Pattern.compile("(\\w+)\\s*(=|!=)\\s*#\\{ew.paramNameValuePairs\\.(\\w+)}");
            Matcher matcher = pattern.matcher(sql);
            while (matcher.find()) {
                // 提取匹配的键（列名）和值（参数占位符中对应的部分）
                String key = matcher.group(1);
                String value = matcher.group(3);
                mappings.put(key, Collections.singletonList(value));
            }
        }
        // 处理in和not in
        if (StrUtil.containsIgnoreCase(sql, "IN")) {
            // 我担心SQL表达式里面可能存在这俩单词的小写形式，所以把他们全大写化一下
            sql = normalizeInNotIn(sql);

            // 正则表达式，用于匹配IN或NOT IN关键字前面的参数
            String regex = "(\\w+)\\s+(NOT\\s+)?IN";
            Pattern patternForIn = Pattern.compile(regex);
            Matcher matcherForIn = patternForIn.matcher(sql);

            if (matcherForIn.find()) {
                // 获取IN或NOT IN前面的参数，实际过程中发现了这种情况，IN里面参数太多会导致正则表达式解析报栈溢出了
                String parameterBeforeIn = matcherForIn.group(1);
                // 判断这个参数名是不是敏感字段，如果是我才解析，不是我就没必要解析了
                if (sensitiveFieldNames.contains(parameterBeforeIn)) {
                    // 这个就必须用s+了，这俩符号前后必须至少有一个空格
                    Pattern pattern = Pattern.compile("(\\w+)\\s+(IN|NOT IN)\\s+\\((#\\{ew.paramNameValuePairs\\.\\w+}(,#\\{ew.paramNameValuePairs\\.\\w+})*)\\)");
                    Matcher matcher = pattern.matcher(sql);

                    while (matcher.find()) {
                        String key = matcher.group(1);
                        String values = matcher.group(3);

                        List<String> valueList = new ArrayList<>();
                        // 正则表达式匹配值
                        Pattern valuesPattern = Pattern.compile("#\\{ew.paramNameValuePairs\\.(\\w+)}");
                        Matcher valuesMatcher = valuesPattern.matcher(values);

                        while (valuesMatcher.find()) {
                            valueList.add(valuesMatcher.group(1));
                        }

                        mappings.put(key, valueList);
                    }
                }
            }
        }
        // 处理<>
        if (StrUtil.contains(sql, "<>")) {
            // 使用正则表达式匹配键和值的模式
            Pattern pattern = Pattern.compile("(\\w+)\\s*<>\\s*#\\{ew\\.paramNameValuePairs\\.(\\w+)");
            Matcher matcher = pattern.matcher(sql);

            if (matcher.find()) {
                String key = matcher.group(1);
                String value = matcher.group(2);

                // 将值存储到List中
                List<String> valueList = new ArrayList<>();
                valueList.add(value);

                // 将键和值List存储到Map中
                mappings.put(key, valueList);
            }
        }

        return mappings;
    }

    /**
     * 标准化一下sql中的in和not in，全部统一成大写格式
     */
    public static String normalizeInNotIn(String sql) {
        // 编译正则表达式，使用Pattern.CASE_INSENSITIVE使匹配对大小写不敏感
        Pattern pattern = Pattern.compile("\\bnot\\s+in\\b|\\bin\\b", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(sql);

        // 使用StringBuffer来构建最终的字符串
        StringBuffer result = new StringBuffer();

        // 查找并替换
        while (matcher.find()) {
            // 检查匹配到的是"IN"还是"NOT IN"
            String matched = matcher.group().toUpperCase();
            // 使用Matcher的appendReplacement方法替换当前匹配到的部分
            matcher.appendReplacement(result, matched);
        }
        // 将剩余部分添加到结果中
        matcher.appendTail(result);

        return result.toString();
    }

    /**
     * 克隆对象，用于不直接操作原始对象
     */
    public static Object getCopyObject(Object sourceObject) {
        if (null == sourceObject) {
            return null;
        }

        Object copyObject;
        try {
            // 如果源对象未实现序列化接口，那么调用hutool的深克隆方法得到的是一个null值，得让克隆继续往下走
            if (!(sourceObject instanceof Serializable)) {
                throw new Exception("源对象未实现序列化接口");
            }
            copyObject = ObjectUtil.cloneByStream(sourceObject);
            return copyObject;
        } catch (Exception e1) {
            log.warn("深克隆时调用ObjectUtil.cloneByStream失败，失败原因：{}", e1.getMessage());
            /*
            如果发生了异常，那么绝逼是sourObject这个对象没实现序列化接口或者他内部有属性所属类没实现序列化接口，比如xxx.lambdaQuery.in(xxx属性, 某个hashMap.keySet)，这种情况下我用hutool的json解析尝试实现克隆
             */
            Class<?> aClass = sourceObject.getClass();
            String jsonStr = JSONUtil.toJsonStr(sourceObject);
            try {
                copyObject = JSONUtil.toBean(jsonStr, aClass);
                return copyObject;
            } catch (Exception e2) {
                // 这里调用失败，只可能是一种情况，强转失败，JSONObject ---> 目标类型 ：失败
                log.warn("深克隆时调用JSONUtil.toBean失败，失败原因：{}", e2.getMessage());
                /*
                最后一招，kryo序列化框架，因为过程中涉及到临时文件的产生与销毁，所以我就不直接一上来就用这个框架来实现序列化了吧，具体性能因素我暂不考虑
                 */
                Kryo kryo = new Kryo();
                kryo.register(aClass);

                // 进行序列化与反序列化，实现“克隆”
                try {
                    Output output = new Output(new FileOutputStream("file.bin"));
                    kryo.writeObject(output, sourceObject);
                    output.close();

                    Input input = new Input(new FileInputStream("file.bin"));
                    copyObject = kryo.readObject(input, aClass);
                    input.close();

                    return copyObject;

                } catch (Exception e4) {
                    log.warn("调用kryo进行深克隆失败，失败原因：{}", e4.getMessage());
                    throw new RuntimeException(e4);
                }
            }
        }
    }

    /**
     * 获取指定类及其所有父类的字段（公有和私有）。
     */
    public static Field[] getAllFields(Class<?> clazz) {
        List<Field> fields = new ArrayList<>();
        Class<?> currentClass = clazz;
        while (currentClass != null) {
            Field[] declaredFields = currentClass.getDeclaredFields();
            for (Field field : declaredFields) {
                fields.add(field);
            }
            // 移动到父类继续搜索
            currentClass = currentClass.getSuperclass();
        }
        return fields.toArray(new Field[0]);
    }

    /**
     * 判断字段是否需要加密
     */
    public static boolean checkEncrypt (Field field) {
        CryptField cryptField = field.getAnnotation(CryptField.class);
        return null != cryptField && cryptField.encrypt();
    }

    /**
     * 判断字段是否需要解密
     */
    public static boolean checkDecrypt(Field field) {
        CryptField cryptField = field.getAnnotation(CryptField.class);
        return null != cryptField && cryptField.decrypt();
    }

    /**
     * 判断字段是否对象，且该对象是否需要加解密
     */
    public static boolean checkSubObject(Field field) {
        CryptField cryptField = field.getAnnotation(CryptField.class);
        return null != cryptField && cryptField.subObject();
    }

    public static void main(String[] args) {
//        Map<String, List<String>> stringListMap = extractParamsToPlaceholders("(identity_card_number NOT IN (#{ew.paramNameValuePairs.MPGENVAL1},#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3})) and name   = #{ew.paramNameValuePairs.MPGENVAL4}");
//        Map<String, List<String>> stringListMap = extractParamsToPlaceholders("identity_card_number iN (#{ew.paramNameValuePairs.MPGENVAL1},#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3})) and name   != #{ew.paramNameValuePairs.MPGENVAL4} and xxx <>  #{ew.paramNameValuePairs.MPGENVAL4} and yyy NoT iN  (#{ew.paramNameValuePairs.MPGENVAL5},#{ew.paramNameValuePairs.MPGENVAL6},#{ew.paramNameValuePairs.MPGENVAL7}))", getSen());
//        Map<String, List<String>> stringListMap = extractParamsToPlaceholders("phone = #{ew.paramNameValuePairs.MPGENVAL1}");
//        Map<String, List<String>> stringListMap = extractParamsToPlaceholders("(status = #{ew.paramNameValuePairs.MPGENVAL1} AND employee_id IN (#{ew.paramNameValuePairs.MPGENVAL2},#{ew.paramNameValuePairs.MPGENVAL3},#{ew.paramNameValuePairs.MPGENVAL4},#{ew.paramNameValuePairs.MPGENVAL5},#{ew.paramNameValuePairs.MPGENVAL6},#{ew.paramNameValuePairs.MPGENVAL7},#{ew.paramNameValuePairs.MPGENVAL8},#{ew.paramNameValuePairs.MPGENVAL9},#{ew.paramNameValuePairs.MPGENVAL10},#{ew.paramNameValuePairs.MPGENVAL11},#{ew.paramNameValuePairs.MPGENVAL12},#{ew.paramNameValuePairs.MPGENVAL13},#{ew.paramNameValuePairs.MPGENVAL14},#{ew.paramNameValuePairs.MPGENVAL15},#{ew.paramNameValuePairs.MPGENVAL16},#{ew.paramNameValuePairs.MPGENVAL17},#{ew.paramNameValuePairs.MPGENVAL18},#{ew.paramNameValuePairs.MPGENVAL19},#{ew.paramNameValuePairs.MPGENVAL20},#{ew.paramNameValuePairs.MPGENVAL21},#{ew.paramNameValuePairs.MPGENVAL22},#{ew.paramNameValuePairs.MPGENVAL23},#{ew.paramNameValuePairs.MPGENVAL24},#{ew.paramNameValuePairs.MPGENVAL25},#{ew.paramNameValuePairs.MPGENVAL26},#{ew.paramNameValuePairs.MPGENVAL27},#{ew.paramNameValuePairs.MPGENVAL28},#{ew.paramNameValuePairs.MPGENVAL29},#{ew.paramNameValuePairs.MPGENVAL30},#{ew.paramNameValuePairs.MPGENVAL31},#{ew.paramNameValuePairs.MPGENVAL32},#{ew.paramNameValuePairs.MPGENVAL33},#{ew.paramNameValuePairs.MPGENVAL34},#{ew.paramNameValuePairs.MPGENVAL35},#{ew.paramNameValuePairs.MPGENVAL36},#{ew.paramNameValuePairs.MPGENVAL37},#{ew.paramNameValuePairs.MPGENVAL38},#{ew.paramNameValuePairs.MPGENVAL39},#{ew.paramNameValuePairs.MPGENVAL40},#{ew.paramNameValuePairs.MPGENVAL41},#{ew.paramNameValuePairs.MPGENVAL42},#{ew.paramNameValuePairs.MPGENVAL43},#{ew.paramNameValuePairs.MPGENVAL44},#{ew.paramNameValuePairs.MPGENVAL45},#{ew.paramNameValuePairs.MPGENVAL46},#{ew.paramNameValuePairs.MPGENVAL47},#{ew.paramNameValuePairs.MPGENVAL48},#{ew.paramNameValuePairs.MPGENVAL49},#{ew.paramNameValuePairs.MPGENVAL50},#{ew.paramNameValuePairs.MPGENVAL51},#{ew.paramNameValuePairs.MPGENVAL52},#{ew.paramNameValuePairs.MPGENVAL53},#{ew.paramNameValuePairs.MPGENVAL54},#{ew.paramNameValuePairs.MPGENVAL55},#{ew.paramNameValuePairs.MPGENVAL56},#{ew.paramNameValuePairs.MPGENVAL57},#{ew.paramNameValuePairs.MPGENVAL58},#{ew.paramNameValuePairs.MPGENVAL59},#{ew.paramNameValuePairs.MPGENVAL60},#{ew.paramNameValuePairs.MPGENVAL61},#{ew.paramNameValuePairs.MPGENVAL62},#{ew.paramNameValuePairs.MPGENVAL63},#{ew.paramNameValuePairs.MPGENVAL64},#{ew.paramNameValuePairs.MPGENVAL65},#{ew.paramNameValuePairs.MPGENVAL66},#{ew.paramNameValuePairs.MPGENVAL67},#{ew.paramNameValuePairs.MPGENVAL68},#{ew.paramNameValuePairs.MPGENVAL69},#{ew.paramNameValuePairs.MPGENVAL70},#{ew.paramNameValuePairs.MPGENVAL71},#{ew.paramNameValuePairs.MPGENVAL72},#{ew.paramNameValuePairs.MPGENVAL73},#{ew.paramNameValuePairs.MPGENVAL74},#{ew.paramNameValuePairs.MPGENVAL75},#{ew.paramNameValuePairs.MPGENVAL76},#{ew.paramNameValuePairs.MPGENVAL77},#{ew.paramNameValuePairs.MPGENVAL78},#{ew.paramNameValuePairs.MPGENVAL79},#{ew.paramNameValuePairs.MPGENVAL80},#{ew.paramNameValuePairs.MPGENVAL81},#{ew.paramNameValuePairs.MPGENVAL82},#{ew.paramNameValuePairs.MPGENVAL83},#{ew.paramNameValuePairs.MPGENVAL84},#{ew.paramNameValuePairs.MPGENVAL85},#{ew.paramNameValuePairs.MPGENVAL86},#{ew.paramNameValuePairs.MPGENVAL87},#{ew.paramNameValuePairs.MPGENVAL88},#{ew.paramNameValuePairs.MPGENVAL89},#{ew.paramNameValuePairs.MPGENVAL90},#{ew.paramNameValuePairs.MPGENVAL91},#{ew.paramNameValuePairs.MPGENVAL92},#{ew.paramNameValuePairs.MPGENVAL93},#{ew.paramNameValuePairs.MPGENVAL94},#{ew.paramNameValuePairs.MPGENVAL95},#{ew.paramNameValuePairs.MPGENVAL96},#{ew.paramNameValuePairs.MPGENVAL97},#{ew.paramNameValuePairs.MPGENVAL98},#{ew.paramNameValuePairs.MPGENVAL99},#{ew.paramNameValuePairs.MPGENVAL100},#{ew.paramNameValuePairs.MPGENVAL101},#{ew.paramNameValuePairs.MPGENVAL102},#{ew.paramNameValuePairs.MPGENVAL103},#{ew.paramNameValuePairs.MPGENVAL104},#{ew.paramNameValuePairs.MPGENVAL105},#{ew.paramNameValuePairs.MPGENVAL106},#{ew.paramNameValuePairs.MPGENVAL107},#{ew.paramNameValuePairs.MPGENVAL108},#{ew.paramNameValuePairs.MPGENVAL109},#{ew.paramNameValuePairs.MPGENVAL110},#{ew.paramNameValuePairs.MPGENVAL111},#{ew.paramNameValuePairs.MPGENVAL112},#{ew.paramNameValuePairs.MPGENVAL113},#{ew.paramNameValuePairs.MPGENVAL114},#{ew.paramNameValuePairs.MPGENVAL115},#{ew.paramNameValuePairs.MPGENVAL116},#{ew.paramNameValuePairs.MPGENVAL117},#{ew.paramNameValuePairs.MPGENVAL118},#{ew.paramNameValuePairs.MPGENVAL119},#{ew.paramNameValuePairs.MPGENVAL120},#{ew.paramNameValuePairs.MPGENVAL121},#{ew.paramNameValuePairs.MPGENVAL122},#{ew.paramNameValuePairs.MPGENVAL123},#{ew.paramNameValuePairs.MPGENVAL124},#{ew.paramNameValuePairs.MPGENVAL125},#{ew.paramNameValuePairs.MPGENVAL126},#{ew.paramNameValuePairs.MPGENVAL127},#{ew.paramNameValuePairs.MPGENVAL128},#{ew.paramNameValuePairs.MPGENVAL129},#{ew.paramNameValuePairs.MPGENVAL130},#{ew.paramNameValuePairs.MPGENVAL131},#{ew.paramNameValuePairs.MPGENVAL132},#{ew.paramNameValuePairs.MPGENVAL133},#{ew.paramNameValuePairs.MPGENVAL134},#{ew.paramNameValuePairs.MPGENVAL135},#{ew.paramNameValuePairs.MPGENVAL136},#{ew.paramNameValuePairs.MPGENVAL137},#{ew.paramNameValuePairs.MPGENVAL138},#{ew.paramNameValuePairs.MPGENVAL139},#{ew.paramNameValuePairs.MPGENVAL140},#{ew.paramNameValuePairs.MPGENVAL141},#{ew.paramNameValuePairs.MPGENVAL142},#{ew.paramNameValuePairs.MPGENVAL143},#{ew.paramNameValuePairs.MPGENVAL144},#{ew.paramNameValuePairs.MPGENVAL145},#{ew.paramNameValuePairs.MPGENVAL146},#{ew.paramNameValuePairs.MPGENVAL147},#{ew.paramNameValuePairs.MPGENVAL148},#{ew.paramNameValuePairs.MPGENVAL149},#{ew.paramNameValuePairs.MPGENVAL150},#{ew.paramNameValuePairs.MPGENVAL151},#{ew.paramNameValuePairs.MPGENVAL152},#{ew.paramNameValuePairs.MPGENVAL153},#{ew.paramNameValuePairs.MPGENVAL154},#{ew.paramNameValuePairs.MPGENVAL155},#{ew.paramNameValuePairs.MPGENVAL156},#{ew.paramNameValuePairs.MPGENVAL157},#{ew.paramNameValuePairs.MPGENVAL158},#{ew.paramNameValuePairs.MPGENVAL159},#{ew.paramNameValuePairs.MPGENVAL160},#{ew.paramNameValuePairs.MPGENVAL161},#{ew.paramNameValuePairs.MPGENVAL162},#{ew.paramNameValuePairs.MPGENVAL163},#{ew.paramNameValuePairs.MPGENVAL164},#{ew.paramNameValuePairs.MPGENVAL165},#{ew.paramNameValuePairs.MPGENVAL166},#{ew.paramNameValuePairs.MPGENVAL167},#{ew.paramNameValuePairs.MPGENVAL168},#{ew.paramNameValuePairs.MPGENVAL169},#{ew.paramNameValuePairs.MPGENVAL170},#{ew.paramNameValuePairs.MPGENVAL171},#{ew.paramNameValuePairs.MPGENVAL172},#{ew.paramNameValuePairs.MPGENVAL173},#{ew.paramNameValuePairs.MPGENVAL174},#{ew.paramNameValuePairs.MPGENVAL175},#{ew.paramNameValuePairs.MPGENVAL176},#{ew.paramNameValuePairs.MPGENVAL177},#{ew.paramNameValuePairs.MPGENVAL178},#{ew.paramNameValuePairs.MPGENVAL179},#{ew.paramNameValuePairs.MPGENVAL180},#{ew.paramNameValuePairs.MPGENVAL181},#{ew.paramNameValuePairs.MPGENVAL182},#{ew.paramNameValuePairs.MPGENVAL183},#{ew.paramNameValuePairs.MPGENVAL184},#{ew.paramNameValuePairs.MPGENVAL185},#{ew.paramNameValuePairs.MPGENVAL186},#{ew.paramNameValuePairs.MPGENVAL187},#{ew.paramNameValuePairs.MPGENVAL188},#{ew.paramNameValuePairs.MPGENVAL189},#{ew.paramNameValuePairs.MPGENVAL190},#{ew.paramNameValuePairs.MPGENVAL191},#{ew.paramNameValuePairs.MPGENVAL192},#{ew.paramNameValuePairs.MPGENVAL193},#{ew.paramNameValuePairs.MPGENVAL194},#{ew.paramNameValuePairs.MPGENVAL195},#{ew.paramNameValuePairs.MPGENVAL196},#{ew.paramNameValuePairs.MPGENVAL197},#{ew.paramNameValuePairs.MPGENVAL198},#{ew.paramNameValuePairs.MPGENVAL199},#{ew.paramNameValuePairs.MPGENVAL200},#{ew.paramNameValuePairs.MPGENVAL201},#{ew.paramNameValuePairs.MPGENVAL202},#{ew.paramNameValuePairs.MPGENVAL203},#{ew.paramNameValuePairs.MPGENVAL204},#{ew.paramNameValuePairs.MPGENVAL205},#{ew.paramNameValuePairs.MPGENVAL206},#{ew.paramNameValuePairs.MPGENVAL207},#{ew.paramNameValuePairs.MPGENVAL208},#{ew.paramNameValuePairs.MPGENVAL209},#{ew.paramNameValuePairs.MPGENVAL210},#{ew.paramNameValuePairs.MPGENVAL211},#{ew.paramNameValuePairs.MPGENVAL212},#{ew.paramNameValuePairs.MPGENVAL213},#{ew.paramNameValuePairs.MPGENVAL214},#{ew.paramNameValuePairs.MPGENVAL215},#{ew.paramNameValuePairs.MPGENVAL216},#{ew.paramNameValuePairs.MPGENVAL217},#{ew.paramNameValuePairs.MPGENVAL218},#{ew.paramNameValuePairs.MPGENVAL219},#{ew.paramNameValuePairs.MPGENVAL220},#{ew.paramNameValuePairs.MPGENVAL221},#{ew.paramNameValuePairs.MPGENVAL222},#{ew.paramNameValuePairs.MPGENVAL223},#{ew.paramNameValuePairs.MPGENVAL224},#{ew.paramNameValuePairs.MPGENVAL225},#{ew.paramNameValuePairs.MPGENVAL226},#{ew.paramNameValuePairs.MPGENVAL227},#{ew.paramNameValuePairs.MPGENVAL228},#{ew.paramNameValuePairs.MPGENVAL229},#{ew.paramNameValuePairs.MPGENVAL230},#{ew.paramNameValuePairs.MPGENVAL231},#{ew.paramNameValuePairs.MPGENVAL232},#{ew.paramNameValuePairs.MPGENVAL233},#{ew.paramNameValuePairs.MPGENVAL234},#{ew.paramNameValuePairs.MPGENVAL235},#{ew.paramNameValuePairs.MPGENVAL236},#{ew.paramNameValuePairs.MPGENVAL237},#{ew.paramNameValuePairs.MPGENVAL238},#{ew.paramNameValuePairs.MPGENVAL239},#{ew.paramNameValuePairs.MPGENVAL240},#{ew.paramNameValuePairs.MPGENVAL241},#{ew.paramNameValuePairs.MPGENVAL242},#{ew.paramNameValuePairs.MPGENVAL243},#{ew.paramNameValuePairs.MPGENVAL244},#{ew.paramNameValuePairs.MPGENVAL245},#{ew.paramNameValuePairs.MPGENVAL246},#{ew.paramNameValuePairs.MPGENVAL247},#{ew.paramNameValuePairs.MPGENVAL248},#{ew.paramNameValuePairs.MPGENVAL249},#{ew.paramNameValuePairs.MPGENVAL250},#{ew.paramNameValuePairs.MPGENVAL251},#{ew.paramNameValuePairs.MPGENVAL252},#{ew.paramNameValuePairs.MPGENVAL253},#{ew.paramNameValuePairs.MPGENVAL254},#{ew.paramNameValuePairs.MPGENVAL255},#{ew.paramNameValuePairs.MPGENVAL256},#{ew.paramNameValuePairs.MPGENVAL257},#{ew.paramNameValuePairs.MPGENVAL258},#{ew.paramNameValuePairs.MPGENVAL259},#{ew.paramNameValuePairs.MPGENVAL260},#{ew.paramNameValuePairs.MPGENVAL261},#{ew.paramNameValuePairs.MPGENVAL262},#{ew.paramNameValuePairs.MPGENVAL263},#{ew.paramNameValuePairs.MPGENVAL264},#{ew.paramNameValuePairs.MPGENVAL265},#{ew.paramNameValuePairs.MPGENVAL266},#{ew.paramNameValuePairs.MPGENVAL267},#{ew.paramNameValuePairs.MPGENVAL268},#{ew.paramNameValuePairs.MPGENVAL269},#{ew.paramNameValuePairs.MPGENVAL270},#{ew.paramNameValuePairs.MPGENVAL271},#{ew.paramNameValuePairs.MPGENVAL272},#{ew.paramNameValuePairs.MPGENVAL273},#{ew.paramNameValuePairs.MPGENVAL274},#{ew.paramNameValuePairs.MPGENVAL275},#{ew.paramNameValuePairs.MPGENVAL276},#{ew.paramNameValuePairs.MPGENVAL277},#{ew.paramNameValuePairs.MPGENVAL278},#{ew.paramNameValuePairs.MPGENVAL279},#{ew.paramNameValuePairs.MPGENVAL280},#{ew.paramNameValuePairs.MPGENVAL281},#{ew.paramNameValuePairs.MPGENVAL282},#{ew.paramNameValuePairs.MPGENVAL283},#{ew.paramNameValuePairs.MPGENVAL284},#{ew.paramNameValuePairs.MPGENVAL285},#{ew.paramNameValuePairs.MPGENVAL286},#{ew.paramNameValuePairs.MPGENVAL287},#{ew.paramNameValuePairs.MPGENVAL288},#{ew.paramNameValuePairs.MPGENVAL289},#{ew.paramNameValuePairs.MPGENVAL290},#{ew.paramNameValuePairs.MPGENVAL291},#{ew.paramNameValuePairs.MPGENVAL292},#{ew.paramNameValuePairs.MPGENVAL293},#{ew.paramNameValuePairs.MPGENVAL294},#{ew.paramNameValuePairs.MPGENVAL295},#{ew.paramNameValuePairs.MPGENVAL296},#{ew.paramNameValuePairs.MPGENVAL297},#{ew.paramNameValuePairs.MPGENVAL298},#{ew.paramNameValuePairs.MPGENVAL299},#{ew.paramNameValuePairs.MPGENVAL300},#{ew.paramNameValuePairs.MPGENVAL301},#{ew.paramNameValuePairs.MPGENVAL302},#{ew.paramNameValuePairs.MPGENVAL303},#{ew.paramNameValuePairs.MPGENVAL304},#{ew.paramNameValuePairs.MPGENVAL305},#{ew.paramNameValuePairs.MPGENVAL306},#{ew.paramNameValuePairs.MPGENVAL307},#{ew.paramNameValuePairs.MPGENVAL308},#{ew.paramNameValuePairs.MPGENVAL309},#{ew.paramNameValuePairs.MPGENVAL310},#{ew.paramNameValuePairs.MPGENVAL311},#{ew.paramNameValuePairs.MPGENVAL312},#{ew.paramNameValuePairs.MPGENVAL313},#{ew.paramNameValuePairs.MPGENVAL314},#{ew.paramNameValuePairs.MPGENVAL315},#{ew.paramNameValuePairs.MPGENVAL316},#{ew.paramNameValuePairs.MPGENVAL317},#{ew.paramNameValuePairs.MPGENVAL318},#{ew.paramNameValuePairs.MPGENVAL319},#{ew.paramNameValuePairs.MPGENVAL320},#{ew.paramNameValuePairs.MPGENVAL321},#{ew.paramNameValuePairs.MPGENVAL322},#{ew.paramNameValuePairs.MPGENVAL323},#{ew.paramNameValuePairs.MPGENVAL324},#{ew.paramNameValuePairs.MPGENVAL325},#{ew.paramNameValuePairs.MPGENVAL326},#{ew.paramNameValuePairs.MPGENVAL327},#{ew.paramNameValuePairs.MPGENVAL328},#{ew.paramNameValuePairs.MPGENVAL329},#{ew.paramNameValuePairs.MPGENVAL330},#{ew.paramNameValuePairs.MPGENVAL331},#{ew.paramNameValuePairs.MPGENVAL332},#{ew.paramNameValuePairs.MPGENVAL333},#{ew.paramNameValuePairs.MPGENVAL334},#{ew.paramNameValuePairs.MPGENVAL335},#{ew.paramNameValuePairs.MPGENVAL336},#{ew.paramNameValuePairs.MPGENVAL337},#{ew.paramNameValuePairs.MPGENVAL338},#{ew.paramNameValuePairs.MPGENVAL339},#{ew.paramNameValuePairs.MPGENVAL340},#{ew.paramNameValuePairs.MPGENVAL341},#{ew.paramNameValuePairs.MPGENVAL342},#{ew.paramNameValuePairs.MPGENVAL343},#{ew.paramNameValuePairs.MPGENVAL344},#{ew.paramNameValuePairs.MPGENVAL345},#{ew.paramNameValuePairs.MPGENVAL346},#{ew.paramNameValuePairs.MPGENVAL347},#{ew.paramNameValuePairs.MPGENVAL348},#{ew.paramNameValuePairs.MPGENVAL349},#{ew.paramNameValuePairs.MPGENVAL350},#{ew.paramNameValuePairs.MPGENVAL351},#{ew.paramNameValuePairs.MPGENVAL352},#{ew.paramNameValuePairs.MPGENVAL353},#{ew.paramNameValuePairs.MPGENVAL354},#{ew.paramNameValuePairs.MPGENVAL355},#{ew.paramNameValuePairs.MPGENVAL356},#{ew.paramNameValuePairs.MPGENVAL357},#{ew.paramNameValuePairs.MPGENVAL358},#{ew.paramNameValuePairs.MPGENVAL359},#{ew.paramNameValuePairs.MPGENVAL360},#{ew.paramNameValuePairs.MPGENVAL361},#{ew.paramNameValuePairs.MPGENVAL362},#{ew.paramNameValuePairs.MPGENVAL363},#{ew.paramNameValuePairs.MPGENVAL364},#{ew.paramNameValuePairs.MPGENVAL365},#{ew.paramNameValuePairs.MPGENVAL366},#{ew.paramNameValuePairs.MPGENVAL367},#{ew.paramNameValuePairs.MPGENVAL368},#{ew.paramNameValuePairs.MPGENVAL369},#{ew.paramNameValuePairs.MPGENVAL370},#{ew.paramNameValuePairs.MPGENVAL371},#{ew.paramNameValuePairs.MPGENVAL372},#{ew.paramNameValuePairs.MPGENVAL373},#{ew.paramNameValuePairs.MPGENVAL374},#{ew.paramNameValuePairs.MPGENVAL375},#{ew.paramNameValuePairs.MPGENVAL376},#{ew.paramNameValuePairs.MPGENVAL377},#{ew.paramNameValuePairs.MPGENVAL378},#{ew.paramNameValuePairs.MPGENVAL379},#{ew.paramNameValuePairs.MPGENVAL380},#{ew.paramNameValuePairs.MPGENVAL381},#{ew.paramNameValuePairs.MPGENVAL382},#{ew.paramNameValuePairs.MPGENVAL383},#{ew.paramNameValuePairs.MPGENVAL384},#{ew.paramNameValuePairs.MPGENVAL385},#{ew.paramNameValuePairs.MPGENVAL386},#{ew.paramNameValuePairs.MPGENVAL387},#{ew.paramNameValuePairs.MPGENVAL388},#{ew.paramNameValuePairs.MPGENVAL389},#{ew.paramNameValuePairs.MPGENVAL390},#{ew.paramNameValuePairs.MPGENVAL391},#{ew.paramNameValuePairs.MPGENVAL392},#{ew.paramNameValuePairs.MPGENVAL393},#{ew.paramNameValuePairs.MPGENVAL394},#{ew.paramNameValuePairs.MPGENVAL395},#{ew.paramNameValuePairs.MPGENVAL396},#{ew.paramNameValuePairs.MPGENVAL397},#{ew.paramNameValuePairs.MPGENVAL398},#{ew.paramNameValuePairs.MPGENVAL399},#{ew.paramNameValuePairs.MPGENVAL400},#{ew.paramNameValuePairs.MPGENVAL401},#{ew.paramNameValuePairs.MPGENVAL402},#{ew.paramNameValuePairs.MPGENVAL403},#{ew.paramNameValuePairs.MPGENVAL404},#{ew.paramNameValuePairs.MPGENVAL405},#{ew.paramNameValuePairs.MPGENVAL406},#{ew.paramNameValuePairs.MPGENVAL407},#{ew.paramNameValuePairs.MPGENVAL408},#{ew.paramNameValuePairs.MPGENVAL409},#{ew.paramNameValuePairs.MPGENVAL410},#{ew.paramNameValuePairs.MPGENVAL411},#{ew.paramNameValuePairs.MPGENVAL412},#{ew.paramNameValuePairs.MPGENVAL413},#{ew.paramNameValuePairs.MPGENVAL414},#{ew.paramNameValuePairs.MPGENVAL415},#{ew.paramNameValuePairs.MPGENVAL416},#{ew.paramNameValuePairs.MPGENVAL417},#{ew.paramNameValuePairs.MPGENVAL418},#{ew.paramNameValuePairs.MPGENVAL419},#{ew.paramNameValuePairs.MPGENVAL420},#{ew.paramNameValuePairs.MPGENVAL421},#{ew.paramNameValuePairs.MPGENVAL422},#{ew.paramNameValuePairs.MPGENVAL423},#{ew.paramNameValuePairs.MPGENVAL424},#{ew.paramNameValuePairs.MPGENVAL425},#{ew.paramNameValuePairs.MPGENVAL426},#{ew.paramNameValuePairs.MPGENVAL427},#{ew.paramNameValuePairs.MPGENVAL428},#{ew.paramNameValuePairs.MPGENVAL429},#{ew.paramNameValuePairs.MPGENVAL430},#{ew.paramNameValuePairs.MPGENVAL431},#{ew.paramNameValuePairs.MPGENVAL432},#{ew.paramNameValuePairs.MPGENVAL433},#{ew.paramNameValuePairs.MPGENVAL434},#{ew.paramNameValuePairs.MPGENVAL435},#{ew.paramNameValuePairs.MPGENVAL436},#{ew.paramNameValuePairs.MPGENVAL437},#{ew.paramNameValuePairs.MPGENVAL438},#{ew.paramNameValuePairs.MPGENVAL439},#{ew.paramNameValuePairs.MPGENVAL440},#{ew.paramNameValuePairs.MPGENVAL441},#{ew.paramNameValuePairs.MPGENVAL442},#{ew.paramNameValuePairs.MPGENVAL443},#{ew.paramNameValuePairs.MPGENVAL444},#{ew.paramNameValuePairs.MPGENVAL445},#{ew.paramNameValuePairs.MPGENVAL446},#{ew.paramNameValuePairs.MPGENVAL447},#{ew.paramNameValuePairs.MPGENVAL448},#{ew.paramNameValuePairs.MPGENVAL449},#{ew.paramNameValuePairs.MPGENVAL450},#{ew.paramNameValuePairs.MPGENVAL451},#{ew.paramNameValuePairs.MPGENVAL452},#{ew.paramNameValuePairs.MPGENVAL453},#{ew.paramNameValuePairs.MPGENVAL454},#{ew.paramNameValuePairs.MPGENVAL455},#{ew.paramNameValuePairs.MPGENVAL456},#{ew.paramNameValuePairs.MPGENVAL457},#{ew.paramNameValuePairs.MPGENVAL458},#{ew.paramNameValuePairs.MPGENVAL459},#{ew.paramNameValuePairs.MPGENVAL460},#{ew.paramNameValuePairs.MPGENVAL461},#{ew.paramNameValuePairs.MPGENVAL462},#{ew.paramNameValuePairs.MPGENVAL463},#{ew.paramNameValuePairs.MPGENVAL464},#{ew.paramNameValuePairs.MPGENVAL465},#{ew.paramNameValuePairs.MPGENVAL466},#{ew.paramNameValuePairs.MPGENVAL467},#{ew.paramNameValuePairs.MPGENVAL468},#{ew.paramNameValuePairs.MPGENVAL469},#{ew.paramNameValuePairs.MPGENVAL470},#{ew.paramNameValuePairs.MPGENVAL471},#{ew.paramNameValuePairs.MPGENVAL472},#{ew.paramNameValuePairs.MPGENVAL473},#{ew.paramNameValuePairs.MPGENVAL474},#{ew.paramNameValuePairs.MPGENVAL475},#{ew.paramNameValuePairs.MPGENVAL476},#{ew.paramNameValuePairs.MPGENVAL477},#{ew.paramNameValuePairs.MPGENVAL478},#{ew.paramNameValuePairs.MPGENVAL479},#{ew.paramNameValuePairs.MPGENVAL480},#{ew.paramNameValuePairs.MPGENVAL481},#{ew.paramNameValuePairs.MPGENVAL482},#{ew.paramNameValuePairs.MPGENVAL483},#{ew.paramNameValuePairs.MPGENVAL484},#{ew.paramNameValuePairs.MPGENVAL485},#{ew.paramNameValuePairs.MPGENVAL486},#{ew.paramNameValuePairs.MPGENVAL487},#{ew.paramNameValuePairs.MPGENVAL488},#{ew.paramNameValuePairs.MPGENVAL489},#{ew.paramNameValuePairs.MPGENVAL490},#{ew.paramNameValuePairs.MPGENVAL491},#{ew.paramNameValuePairs.MPGENVAL492},#{ew.paramNameValuePairs.MPGENVAL493},#{ew.paramNameValuePairs.MPGENVAL494},#{ew.paramNameValuePairs.MPGENVAL495},#{ew.paramNameValuePairs.MPGENVAL496},#{ew.paramNameValuePairs.MPGENVAL497},#{ew.paramNameValuePairs.MPGENVAL498},#{ew.paramNameValuePairs.MPGENVAL499},#{ew.paramNameValuePairs.MPGENVAL500},#{ew.paramNameValuePairs.MPGENVAL501},#{ew.paramNameValuePairs.MPGENVAL502},#{ew.paramNameValuePairs.MPGENVAL503},#{ew.paramNameValuePairs.MPGENVAL504},#{ew.paramNameValuePairs.MPGENVAL505},#{ew.paramNameValuePairs.MPGENVAL506},#{ew.paramNameValuePairs.MPGENVAL507},#{ew.paramNameValuePairs.MPGENVAL508},#{ew.paramNameValuePairs.MPGENVAL509},#{ew.paramNameValuePairs.MPGENVAL510},#{ew.paramNameValuePairs.MPGENVAL511},#{ew.paramNameValuePairs.MPGENVAL512},#{ew.paramNameValuePairs.MPGENVAL513},#{ew.paramNameValuePairs.MPGENVAL514},#{ew.paramNameValuePairs.MPGENVAL515},#{ew.paramNameValuePairs.MPGENVAL516},#{ew.paramNameValuePairs.MPGENVAL517},#{ew.paramNameValuePairs.MPGENVAL518},#{ew.paramNameValuePairs.MPGENVAL519},#{ew.paramNameValuePairs.MPGENVAL520},#{ew.paramNameValuePairs.MPGENVAL521},#{ew.paramNameValuePairs.MPGENVAL522},#{ew.paramNameValuePairs.MPGENVAL523},#{ew.paramNameValuePairs.MPGENVAL524},#{ew.paramNameValuePairs.MPGENVAL525},#{ew.paramNameValuePairs.MPGENVAL526},#{ew.paramNameValuePairs.MPGENVAL527},#{ew.paramNameValuePairs.MPGENVAL528},#{ew.paramNameValuePairs.MPGENVAL529},#{ew.paramNameValuePairs.MPGENVAL530},#{ew.paramNameValuePairs.MPGENVAL531},#{ew.paramNameValuePairs.MPGENVAL532},#{ew.paramNameValuePairs.MPGENVAL533},#{ew.paramNameValuePairs.MPGENVAL534},#{ew.paramNameValuePairs.MPGENVAL535},#{ew.paramNameValuePairs.MPGENVAL536},#{ew.paramNameValuePairs.MPGENVAL537},#{ew.paramNameValuePairs.MPGENVAL538},#{ew.paramNameValuePairs.MPGENVAL539},#{ew.paramNameValuePairs.MPGENVAL540},#{ew.paramNameValuePairs.MPGENVAL541},#{ew.paramNameValuePairs.MPGENVAL542},#{ew.paramNameValuePairs.MPGENVAL543},#{ew.paramNameValuePairs.MPGENVAL544},#{ew.paramNameValuePairs.MPGENVAL545},#{ew.paramNameValuePairs.MPGENVAL546},#{ew.paramNameValuePairs.MPGENVAL547},#{ew.paramNameValuePairs.MPGENVAL548},#{ew.paramNameValuePairs.MPGENVAL549},#{ew.paramNameValuePairs.MPGENVAL550},#{ew.paramNameValuePairs.MPGENVAL551},#{ew.paramNameValuePairs.MPGENVAL552},#{ew.paramNameValuePairs.MPGENVAL553},#{ew.paramNameValuePairs.MPGENVAL554},#{ew.paramNameValuePairs.MPGENVAL555},#{ew.paramNameValuePairs.MPGENVAL556},#{ew.paramNameValuePairs.MPGENVAL557},#{ew.paramNameValuePairs.MPGENVAL558},#{ew.paramNameValuePairs.MPGENVAL559},#{ew.paramNameValuePairs.MPGENVAL560},#{ew.paramNameValuePairs.MPGENVAL561},#{ew.paramNameValuePairs.MPGENVAL562},#{ew.paramNameValuePairs.MPGENVAL563},#{ew.paramNameValuePairs.MPGENVAL564},#{ew.paramNameValuePairs.MPGENVAL565},#{ew.paramNameValuePairs.MPGENVAL566},#{ew.paramNameValuePairs.MPGENVAL567},#{ew.paramNameValuePairs.MPGENVAL568},#{ew.paramNameValuePairs.MPGENVAL569},#{ew.paramNameValuePairs.MPGENVAL570},#{ew.paramNameValuePairs.MPGENVAL571},#{ew.paramNameValuePairs.MPGENVAL572},#{ew.paramNameValuePairs.MPGENVAL573},#{ew.paramNameValuePairs.MPGENVAL574},#{ew.paramNameValuePairs.MPGENVAL575},#{ew.paramNameValuePairs.MPGENVAL576},#{ew.paramNameValuePairs.MPGENVAL577},#{ew.paramNameValuePairs.MPGENVAL578},#{ew.paramNameValuePairs.MPGENVAL579},#{ew.paramNameValuePairs.MPGENVAL580},#{ew.paramNameValuePairs.MPGENVAL581},#{ew.paramNameValuePairs.MPGENVAL582},#{ew.paramNameValuePairs.MPGENVAL583},#{ew.paramNameValuePairs.MPGENVAL584},#{ew.paramNameValuePairs.MPGENVAL585},#{ew.paramNameValuePairs.MPGENVAL586},#{ew.paramNameValuePairs.MPGENVAL587},#{ew.paramNameValuePairs.MPGENVAL588},#{ew.paramNameValuePairs.MPGENVAL589},#{ew.paramNameValuePairs.MPGENVAL590},#{ew.paramNameValuePairs.MPGENVAL591},#{ew.paramNameValuePairs.MPGENVAL592},#{ew.paramNameValuePairs.MPGENVAL593},#{ew.paramNameValuePairs.MPGENVAL594},#{ew.paramNameValuePairs.MPGENVAL595},#{ew.paramNameValuePairs.MPGENVAL596},#{ew.paramNameValuePairs.MPGENVAL597},#{ew.paramNameValuePairs.MPGENVAL598},#{ew.paramNameValuePairs.MPGENVAL599},#{ew.paramNameValuePairs.MPGENVAL600},#{ew.paramNameValuePairs.MPGENVAL601},#{ew.paramNameValuePairs.MPGENVAL602},#{ew.paramNameValuePairs.MPGENVAL603},#{ew.paramNameValuePairs.MPGENVAL604},#{ew.paramNameValuePairs.MPGENVAL605},#{ew.paramNameValuePairs.MPGENVAL606},#{ew.paramNameValuePairs.MPGENVAL607},#{ew.paramNameValuePairs.MPGENVAL608},#{ew.paramNameValuePairs.MPGENVAL609},#{ew.paramNameValuePairs.MPGENVAL610},#{ew.paramNameValuePairs.MPGENVAL611},#{ew.paramNameValuePairs.MPGENVAL612},#{ew.paramNameValuePairs.MPGENVAL613},#{ew.paramNameValuePairs.MPGENVAL614},#{ew.paramNameValuePairs.MPGENVAL615},#{ew.paramNameValuePairs.MPGENVAL616},#{ew.paramNameValuePairs.MPGENVAL617},#{ew.paramNameValuePairs.MPGENVAL618},#{ew.paramNameValuePairs.MPGENVAL619},#{ew.paramNameValuePairs.MPGENVAL620},#{ew.paramNameValuePairs.MPGENVAL621},#{ew.paramNameValuePairs.MPGENVAL622},#{ew.paramNameValuePairs.MPGENVAL623},#{ew.paramNameValuePairs.MPGENVAL624},#{ew.paramNameValuePairs.MPGENVAL625},#{ew.paramNameValuePairs.MPGENVAL626},#{ew.paramNameValuePairs.MPGENVAL627},#{ew.paramNameValuePairs.MPGENVAL628},#{ew.paramNameValuePairs.MPGENVAL629},#{ew.paramNameValuePairs.MPGENVAL630},#{ew.paramNameValuePairs.MPGENVAL631},#{ew.paramNameValuePairs.MPGENVAL632},#{ew.paramNameValuePairs.MPGENVAL633},#{ew.paramNameValuePairs.MPGENVAL634},#{ew.paramNameValuePairs.MPGENVAL635},#{ew.paramNameValuePairs.MPGENVAL636},#{ew.paramNameValuePairs.MPGENVAL637},#{ew.paramNameValuePairs.MPGENVAL638},#{ew.paramNameValuePairs.MPGENVAL639},#{ew.paramNameValuePairs.MPGENVAL640},#{ew.paramNameValuePairs.MPGENVAL641},#{ew.paramNameValuePairs.MPGENVAL642},#{ew.paramNameValuePairs.MPGENVAL643},#{ew.paramNameValuePairs.MPGENVAL644},#{ew.paramNameValuePairs.MPGENVAL645},#{ew.paramNameValuePairs.MPGENVAL646},#{ew.paramNameValuePairs.MPGENVAL647},#{ew.paramNameValuePairs.MPGENVAL648},#{ew.paramNameValuePairs.MPGENVAL649},#{ew.paramNameValuePairs.MPGENVAL650},#{ew.paramNameValuePairs.MPGENVAL651},#{ew.paramNameValuePairs.MPGENVAL652},#{ew.paramNameValuePairs.MPGENVAL653},#{ew.paramNameValuePairs.MPGENVAL654},#{ew.paramNameValuePairs.MPGENVAL655},#{ew.paramNameValuePairs.MPGENVAL656},#{ew.paramNameValuePairs.MPGENVAL657},#{ew.paramNameValuePairs.MPGENVAL658},#{ew.paramNameValuePairs.MPGENVAL659},#{ew.paramNameValuePairs.MPGENVAL660},#{ew.paramNameValuePairs.MPGENVAL661},#{ew.paramNameValuePairs.MPGENVAL662},#{ew.paramNameValuePairs.MPGENVAL663},#{ew.paramNameValuePairs.MPGENVAL664},#{ew.paramNameValuePairs.MPGENVAL665},#{ew.paramNameValuePairs.MPGENVAL666},#{ew.paramNameValuePairs.MPGENVAL667},#{ew.paramNameValuePairs.MPGENVAL668},#{ew.paramNameValuePairs.MPGENVAL669},#{ew.paramNameValuePairs.MPGENVAL670},#{ew.paramNameValuePairs.MPGENVAL671},#{ew.paramNameValuePairs.MPGENVAL672},#{ew.paramNameValuePairs.MPGENVAL673},#{ew.paramNameValuePairs.MPGENVAL674},#{ew.paramNameValuePairs.MPGENVAL675},#{ew.paramNameValuePairs.MPGENVAL676},#{ew.paramNameValuePairs.MPGENVAL677},#{ew.paramNameValuePairs.MPGENVAL678},#{ew.paramNameValuePairs.MPGENVAL679},#{ew.paramNameValuePairs.MPGENVAL680},#{ew.paramNameValuePairs.MPGENVAL681},#{ew.paramNameValuePairs.MPGENVAL682},#{ew.paramNameValuePairs.MPGENVAL683},#{ew.paramNameValuePairs.MPGENVAL684},#{ew.paramNameValuePairs.MPGENVAL685},#{ew.paramNameValuePairs.MPGENVAL686},#{ew.paramNameValuePairs.MPGENVAL687},#{ew.paramNameValuePairs.MPGENVAL688},#{ew.paramNameValuePairs.MPGENVAL689},#{ew.paramNameValuePairs.MPGENVAL690},#{ew.paramNameValuePairs.MPGENVAL691},#{ew.paramNameValuePairs.MPGENVAL692},#{ew.paramNameValuePairs.MPGENVAL693},#{ew.paramNameValuePairs.MPGENVAL694},#{ew.paramNameValuePairs.MPGENVAL695},#{ew.paramNameValuePairs.MPGENVAL696},#{ew.paramNameValuePairs.MPGENVAL697},#{ew.paramNameValuePairs.MPGENVAL698},#{ew.paramNameValuePairs.MPGENVAL699},#{ew.paramNameValuePairs.MPGENVAL700},#{ew.paramNameValuePairs.MPGENVAL701},#{ew.paramNameValuePairs.MPGENVAL702},#{ew.paramNameValuePairs.MPGENVAL703},#{ew.paramNameValuePairs.MPGENVAL704},#{ew.paramNameValuePairs.MPGENVAL705},#{ew.paramNameValuePairs.MPGENVAL706},#{ew.paramNameValuePairs.MPGENVAL707},#{ew.paramNameValuePairs.MPGENVAL708},#{ew.paramNameValuePairs.MPGENVAL709},#{ew.paramNameValuePairs.MPGENVAL710},#{ew.paramNameValuePairs.MPGENVAL711},#{ew.paramNameValuePairs.MPGENVAL712},#{ew.paramNameValuePairs.MPGENVAL713},#{ew.paramNameValuePairs.MPGENVAL714},#{ew.paramNameValuePairs.MPGENVAL715},#{ew.paramNameValuePairs.MPGENVAL716},#{ew.paramNameValuePairs.MPGENVAL717},#{ew.paramNameValuePairs.MPGENVAL718},#{ew.paramNameValuePairs.MPGENVAL719},#{ew.paramNameValuePairs.MPGENVAL720},#{ew.paramNameValuePairs.MPGENVAL721},#{ew.paramNameValuePairs.MPGENVAL722},#{ew.paramNameValuePairs.MPGENVAL723},#{ew.paramNameValuePairs.MPGENVAL724},#{ew.paramNameValuePairs.MPGENVAL725},#{ew.paramNameValuePairs.MPGENVAL726},#{ew.paramNameValuePairs.MPGENVAL727},#{ew.paramNameValuePairs.MPGENVAL728},#{ew.paramNameValuePairs.MPGENVAL729},#{ew.paramNameValuePairs.MPGENVAL730},#{ew.paramNameValuePairs.MPGENVAL731},#{ew.paramNameValuePairs.MPGENVAL732},#{ew.paramNameValuePairs.MPGENVAL733},#{ew.paramNameValuePairs.MPGENVAL734},#{ew.paramNameValuePairs.MPGENVAL735},#{ew.paramNameValuePairs.MPGENVAL736},#{ew.paramNameValuePairs.MPGENVAL737},#{ew.paramNameValuePairs.MPGENVAL738},#{ew.paramNameValuePairs.MPGENVAL739},#{ew.paramNameValuePairs.MPGENVAL740},#{ew.paramNameValuePairs.MPGENVAL741},#{ew.paramNameValuePairs.MPGENVAL742},#{ew.paramNameValuePairs.MPGENVAL743},#{ew.paramNameValuePairs.MPGENVAL744},#{ew.paramNameValuePairs.MPGENVAL745},#{ew.paramNameValuePairs.MPGENVAL746},#{ew.paramNameValuePairs.MPGENVAL747},#{ew.paramNameValuePairs.MPGENVAL748},#{ew.paramNameValuePairs.MPGENVAL749},#{ew.paramNameValuePairs.MPGENVAL750},#{ew.paramNameValuePairs.MPGENVAL751},#{ew.paramNameValuePairs.MPGENVAL752},#{ew.paramNameValuePairs.MPGENVAL753},#{ew.paramNameValuePairs.MPGENVAL754},#{ew.paramNameValuePairs.MPGENVAL755},#{ew.paramNameValuePairs.MPGENVAL756},#{ew.paramNameValuePairs.MPGENVAL757},#{ew.paramNameValuePairs.MPGENVAL758},#{ew.paramNameValuePairs.MPGENVAL759},#{ew.paramNameValuePairs.MPGENVAL760},#{ew.paramNameValuePairs.MPGENVAL761},#{ew.paramNameValuePairs.MPGENVAL762},#{ew.paramNameValuePairs.MPGENVAL763},#{ew.paramNameValuePairs.MPGENVAL764},#{ew.paramNameValuePairs.MPGENVAL765},#{ew.paramNameValuePairs.MPGENVAL766},#{ew.paramNameValuePairs.MPGENVAL767},#{ew.paramNameValuePairs.MPGENVAL768},#{ew.paramNameValuePairs.MPGENVAL769},#{ew.paramNameValuePairs.MPGENVAL770},#{ew.paramNameValuePairs.MPGENVAL771},#{ew.paramNameValuePairs.MPGENVAL772},#{ew.paramNameValuePairs.MPGENVAL773},#{ew.paramNameValuePairs.MPGENVAL774},#{ew.paramNameValuePairs.MPGENVAL775},#{ew.paramNameValuePairs.MPGENVAL776},#{ew.paramNameValuePairs.MPGENVAL777},#{ew.paramNameValuePairs.MPGENVAL778},#{ew.paramNameValuePairs.MPGENVAL779},#{ew.paramNameValuePairs.MPGENVAL780},#{ew.paramNameValuePairs.MPGENVAL781},#{ew.paramNameValuePairs.MPGENVAL782},#{ew.paramNameValuePairs.MPGENVAL783},#{ew.paramNameValuePairs.MPGENVAL784},#{ew.paramNameValuePairs.MPGENVAL785},#{ew.paramNameValuePairs.MPGENVAL786},#{ew.paramNameValuePairs.MPGENVAL787},#{ew.paramNameValuePairs.MPGENVAL788},#{ew.paramNameValuePairs.MPGENVAL789},#{ew.paramNameValuePairs.MPGENVAL790},#{ew.paramNameValuePairs.MPGENVAL791},#{ew.paramNameValuePairs.MPGENVAL792},#{ew.paramNameValuePairs.MPGENVAL793},#{ew.paramNameValuePairs.MPGENVAL794},#{ew.paramNameValuePairs.MPGENVAL795},#{ew.paramNameValuePairs.MPGENVAL796},#{ew.paramNameValuePairs.MPGENVAL797},#{ew.paramNameValuePairs.MPGENVAL798},#{ew.paramNameValuePairs.MPGENVAL799},#{ew.paramNameValuePairs.MPGENVAL800},#{ew.paramNameValuePairs.MPGENVAL801},#{ew.paramNameValuePairs.MPGENVAL802},#{ew.paramNameValuePairs.MPGENVAL803},#{ew.paramNameValuePairs.MPGENVAL804},#{ew.paramNameValuePairs.MPGENVAL805},#{ew.paramNameValuePairs.MPGENVAL806},#{ew.paramNameValuePairs.MPGENVAL807},#{ew.paramNameValuePairs.MPGENVAL808},#{ew.paramNameValuePairs.MPGENVAL809},#{ew.paramNameValuePairs.MPGENVAL810},#{ew.paramNameValuePairs.MPGENVAL811},#{ew.paramNameValuePairs.MPGENVAL812},#{ew.paramNameValuePairs.MPGENVAL813},#{ew.paramNameValuePairs.MPGENVAL814},#{ew.paramNameValuePairs.MPGENVAL815},#{ew.paramNameValuePairs.MPGENVAL816},#{ew.paramNameValuePairs.MPGENVAL817},#{ew.paramNameValuePairs.MPGENVAL818},#{ew.paramNameValuePairs.MPGENVAL819},#{ew.paramNameValuePairs.MPGENVAL820},#{ew.paramNameValuePairs.MPGENVAL821},#{ew.paramNameValuePairs.MPGENVAL822},#{ew.paramNameValuePairs.MPGENVAL823},#{ew.paramNameValuePairs.MPGENVAL824},#{ew.paramNameValuePairs.MPGENVAL825},#{ew.paramNameValuePairs.MPGENVAL826},#{ew.paramNameValuePairs.MPGENVAL827},#{ew.paramNameValuePairs.MPGENVAL828},#{ew.paramNameValuePairs.MPGENVAL829},#{ew.paramNameValuePairs.MPGENVAL830},#{ew.paramNameValuePairs.MPGENVAL831},#{ew.paramNameValuePairs.MPGENVAL832},#{ew.paramNameValuePairs.MPGENVAL833},#{ew.paramNameValuePairs.MPGENVAL834},#{ew.paramNameValuePairs.MPGENVAL835},#{ew.paramNameValuePairs.MPGENVAL836},#{ew.paramNameValuePairs.MPGENVAL837},#{ew.paramNameValuePairs.MPGENVAL838},#{ew.paramNameValuePairs.MPGENVAL839},#{ew.paramNameValuePairs.MPGENVAL840},#{ew.paramNameValuePairs.MPGENVAL841},#{ew.paramNameValuePairs.MPGENVAL842},#{ew.paramNameValuePairs.MPGENVAL843},#{ew.paramNameValuePairs.MPGENVAL844},#{ew.paramNameValuePairs.MPGENVAL845},#{ew.paramNameValuePairs.MPGENVAL846},#{ew.paramNameValuePairs.MPGENVAL847},#{ew.paramNameValuePairs.MPGENVAL848},#{ew.paramNameValuePairs.MPGENVAL849},#{ew.paramNameValuePairs.MPGENVAL850},#{ew.paramNameValuePairs.MPGENVAL851},#{ew.paramNameValuePairs.MPGENVAL852},#{ew.paramNameValuePairs.MPGENVAL853},#{ew.paramNameValuePairs.MPGENVAL854},#{ew.paramNameValuePairs.MPGENVAL855},#{ew.paramNameValuePairs.MPGENVAL856},#{ew.paramNameValuePairs.MPGENVAL857},#{ew.paramNameValuePairs.MPGENVAL858},#{ew.paramNameValuePairs.MPGENVAL859},#{ew.paramNameValuePairs.MPGENVAL860},#{ew.paramNameValuePairs.MPGENVAL861},#{ew.paramNameValuePairs.MPGENVAL862},#{ew.paramNameValuePairs.MPGENVAL863},#{ew.paramNameValuePairs.MPGENVAL864},#{ew.paramNameValuePairs.MPGENVAL865},#{ew.paramNameValuePairs.MPGENVAL866},#{ew.paramNameValuePairs.MPGENVAL867},#{ew.paramNameValuePairs.MPGENVAL868},#{ew.paramNameValuePairs.MPGENVAL869},#{ew.paramNameValuePairs.MPGENVAL870},#{ew.paramNameValuePairs.MPGENVAL871},#{ew.paramNameValuePairs.MPGENVAL872},#{ew.paramNameValuePairs.MPGENVAL873},#{ew.paramNameValuePairs.MPGENVAL874},#{ew.paramNameValuePairs.MPGENVAL875},#{ew.paramNameValuePairs.MPGENVAL876},#{ew.paramNameValuePairs.MPGENVAL877},#{ew.paramNameValuePairs.MPGENVAL878},#{ew.paramNameValuePairs.MPGENVAL879},#{ew.paramNameValuePairs.MPGENVAL880},#{ew.paramNameValuePairs.MPGENVAL881},#{ew.paramNameValuePairs.MPGENVAL882},#{ew.paramNameValuePairs.MPGENVAL883},#{ew.paramNameValuePairs.MPGENVAL884},#{ew.paramNameValuePairs.MPGENVAL885},#{ew.paramNameValuePairs.MPGENVAL886},#{ew.paramNameValuePairs.MPGENVAL887},#{ew.paramNameValuePairs.MPGENVAL888},#{ew.paramNameValuePairs.MPGENVAL889},#{ew.paramNameValuePairs.MPGENVAL890},#{ew.paramNameValuePairs.MPGENVAL891},#{ew.paramNameValuePairs.MPGENVAL892},#{ew.paramNameValuePairs.MPGENVAL893},#{ew.paramNameValuePairs.MPGENVAL894},#{ew.paramNameValuePairs.MPGENVAL895},#{ew.paramNameValuePairs.MPGENVAL896},#{ew.paramNameValuePairs.MPGENVAL897},#{ew.paramNameValuePairs.MPGENVAL898},#{ew.paramNameValuePairs.MPGENVAL899},#{ew.paramNameValuePairs.MPGENVAL900},#{ew.paramNameValuePairs.MPGENVAL901},#{ew.paramNameValuePairs.MPGENVAL902},#{ew.paramNameValuePairs.MPGENVAL903},#{ew.paramNameValuePairs.MPGENVAL904},#{ew.paramNameValuePairs.MPGENVAL905},#{ew.paramNameValuePairs.MPGENVAL906},#{ew.paramNameValuePairs.MPGENVAL907},#{ew.paramNameValuePairs.MPGENVAL908},#{ew.paramNameValuePairs.MPGENVAL909},#{ew.paramNameValuePairs.MPGENVAL910},#{ew.paramNameValuePairs.MPGENVAL911},#{ew.paramNameValuePairs.MPGENVAL912},#{ew.paramNameValuePairs.MPGENVAL913},#{ew.paramNameValuePairs.MPGENVAL914},#{ew.paramNameValuePairs.MPGENVAL915},#{ew.paramNameValuePairs.MPGENVAL916},#{ew.paramNameValuePairs.MPGENVAL917},#{ew.paramNameValuePairs.MPGENVAL918},#{ew.paramNameValuePairs.MPGENVAL919},#{ew.paramNameValuePairs.MPGENVAL920},#{ew.paramNameValuePairs.MPGENVAL921},#{ew.paramNameValuePairs.MPGENVAL922},#{ew.paramNameValuePairs.MPGENVAL923},#{ew.paramNameValuePairs.MPGENVAL924},#{ew.paramNameValuePairs.MPGENVAL925},#{ew.paramNameValuePairs.MPGENVAL926},#{ew.paramNameValuePairs.MPGENVAL927},#{ew.paramNameValuePairs.MPGENVAL928},#{ew.paramNameValuePairs.MPGENVAL929},#{ew.paramNameValuePairs.MPGENVAL930},#{ew.paramNameValuePairs.MPGENVAL931},#{ew.paramNameValuePairs.MPGENVAL932},#{ew.paramNameValuePairs.MPGENVAL933},#{ew.paramNameValuePairs.MPGENVAL934},#{ew.paramNameValuePairs.MPGENVAL935},#{ew.paramNameValuePairs.MPGENVAL936},#{ew.paramNameValuePairs.MPGENVAL937},#{ew.paramNameValuePairs.MPGENVAL938},#{ew.paramNameValuePairs.MPGENVAL939},#{ew.paramNameValuePairs.MPGENVAL940},#{ew.paramNameValuePairs.MPGENVAL941},#{ew.paramNameValuePairs.MPGENVAL942},#{ew.paramNameValuePairs.MPGENVAL943},#{ew.paramNameValuePairs.MPGENVAL944},#{ew.paramNameValuePairs.MPGENVAL945},#{ew.paramNameValuePairs.MPGENVAL946},#{ew.paramNameValuePairs.MPGENVAL947},#{ew.paramNameValuePairs.MPGENVAL948},#{ew.paramNameValuePairs.MPGENVAL949},#{ew.paramNameValuePairs.MPGENVAL950},#{ew.paramNameValuePairs.MPGENVAL951},#{ew.paramNameValuePairs.MPGENVAL952},#{ew.paramNameValuePairs.MPGENVAL953},#{ew.paramNameValuePairs.MPGENVAL954},#{ew.paramNameValuePairs.MPGENVAL955},#{ew.paramNameValuePairs.MPGENVAL956},#{ew.paramNameValuePairs.MPGENVAL957},#{ew.paramNameValuePairs.MPGENVAL958},#{ew.paramNameValuePairs.MPGENVAL959},#{ew.paramNameValuePairs.MPGENVAL960},#{ew.paramNameValuePairs.MPGENVAL961},#{ew.paramNameValuePairs.MPGENVAL962},#{ew.paramNameValuePairs.MPGENVAL963},#{ew.paramNameValuePairs.MPGENVAL964},#{ew.paramNameValuePairs.MPGENVAL965},#{ew.paramNameValuePairs.MPGENVAL966},#{ew.paramNameValuePairs.MPGENVAL967},#{ew.paramNameValuePairs.MPGENVAL968},#{ew.paramNameValuePairs.MPGENVAL969},#{ew.paramNameValuePairs.MPGENVAL970},#{ew.paramNameValuePairs.MPGENVAL971},#{ew.paramNameValuePairs.MPGENVAL972},#{ew.paramNameValuePairs.MPGENVAL973},#{ew.paramNameValuePairs.MPGENVAL974},#{ew.paramNameValuePairs.MPGENVAL975},#{ew.paramNameValuePairs.MPGENVAL976},#{ew.paramNameValuePairs.MPGENVAL977},#{ew.paramNameValuePairs.MPGENVAL978},#{ew.paramNameValuePairs.MPGENVAL979},#{ew.paramNameValuePairs.MPGENVAL980},#{ew.paramNameValuePairs.MPGENVAL981},#{ew.paramNameValuePairs.MPGENVAL982},#{ew.paramNameValuePairs.MPGENVAL983},#{ew.paramNameValuePairs.MPGENVAL984},#{ew.paramNameValuePairs.MPGENVAL985},#{ew.paramNameValuePairs.MPGENVAL986},#{ew.paramNameValuePairs.MPGENVAL987},#{ew.paramNameValuePairs.MPGENVAL988},#{ew.paramNameValuePairs.MPGENVAL989},#{ew.paramNameValuePairs.MPGENVAL990},#{ew.paramNameValuePairs.MPGENVAL991},#{ew.paramNameValuePairs.MPGENVAL992},#{ew.paramNameValuePairs.MPGENVAL993},#{ew.paramNameValuePairs.MPGENVAL994},#{ew.paramNameValuePairs.MPGENVAL995},#{ew.paramNameValuePairs.MPGENVAL996},#{ew.paramNameValuePairs.MPGENVAL997},#{ew.paramNameValuePairs.MPGENVAL998},#{ew.paramNameValuePairs.MPGENVAL999},#{ew.paramNameValuePairs.MPGENVAL1000},#{ew.paramNameValuePairs.MPGENVAL1001},#{ew.paramNameValuePairs.MPGENVAL1002},#{ew.paramNameValuePairs.MPGENVAL1003},#{ew.paramNameValuePairs.MPGENVAL1004},#{ew.paramNameValuePairs.MPGENVAL1005},#{ew.paramNameValuePairs.MPGENVAL1006},#{ew.paramNameValuePairs.MPGENVAL1007},#{ew.paramNameValuePairs.MPGENVAL1008},#{ew.paramNameValuePairs.MPGENVAL1009},#{ew.paramNameValuePairs.MPGENVAL1010},#{ew.paramNameValuePairs.MPGENVAL1011},#{ew.paramNameValuePairs.MPGENVAL1012},#{ew.paramNameValuePairs.MPGENVAL1013},#{ew.paramNameValuePairs.MPGENVAL1014},#{ew.paramNameValuePairs.MPGENVAL1015},#{ew.paramNameValuePairs.MPGENVAL1016},#{ew.paramNameValuePairs.MPGENVAL1017},#{ew.paramNameValuePairs.MPGENVAL1018},#{ew.paramNameValuePairs.MPGENVAL1019})) ORDER BY create_time DESC", getSen());
//        System.out.println(stringListMap);

//        String text = "name in xxx and noT IN yyy";
//        String normalizedText = normalizeInNotIn(text);
//        System.out.println(normalizedText);
    }

    /**
     * 用来测试的，别调
     */
    public static Set<String> getSen() {
        Map<String, Class<?>> SENSITIVE_FIELDS = new HashMap<>();
        SENSITIVE_FIELDS.put("id_card", String.class);
        SENSITIVE_FIELDS.put("phone_number", String.class);
        SENSITIVE_FIELDS.put("data", String.class);
        SENSITIVE_FIELDS.put("identity_card_number", String.class);
        SENSITIVE_FIELDS.put("contact_name", String.class);
        SENSITIVE_FIELDS.put("contact_phone", String.class);
        SENSITIVE_FIELDS.put("bank_address", String.class);
        SENSITIVE_FIELDS.put("bank_account", String.class);
        SENSITIVE_FIELDS.put("actual_residential_address", String.class);
        SENSITIVE_FIELDS.put("employee_id_card", String.class);
        SENSITIVE_FIELDS.put("bonus_cardinal_num", BigDecimal.class);
        SENSITIVE_FIELDS.put("payable_bonus", BigDecimal.class);
        SENSITIVE_FIELDS.put("coefficient_of_performance", BigDecimal.class);
        SENSITIVE_FIELDS.put("actual_pay_bonus", BigDecimal.class);
        SENSITIVE_FIELDS.put("pre_tax_total_bonus", BigDecimal.class);
        SENSITIVE_FIELDS.put("labor_contract_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("try_period_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("phone_num", String.class);
        SENSITIVE_FIELDS.put("qy_wei_xin_phone", String.class);
        SENSITIVE_FIELDS.put("phone", String.class);
        SENSITIVE_FIELDS.put("base_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("job_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("performance_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("total_salary", BigDecimal.class);
        SENSITIVE_FIELDS.put("monthly_standard_salary", BigDecimal.class);

        // 这个name比较特殊，有些表的name要加密，有些的不加，要加的有t_employee_edit_family_info、t_employee_family、t_employee_relation.在对这些表进行操作时，必须把name换成这个名字
        SENSITIVE_FIELDS.put("familyOrRelationName", String.class);

        SENSITIVE_FIELDS.put("id_card_no", String.class);
        SENSITIVE_FIELDS.put("address", String.class);
        SENSITIVE_FIELDS.put("salary", String.class);
        SENSITIVE_FIELDS.put("probation_salary", String.class);
        SENSITIVE_FIELDS.put("birthplace", String.class);
        SENSITIVE_FIELDS.put("live_address", String.class);
        SENSITIVE_FIELDS.put("certificate_num", String.class);
        SENSITIVE_FIELDS.put("original_performance_salary", String.class);
        SENSITIVE_FIELDS.put("current_performance_salary", String.class);
        SENSITIVE_FIELDS.put("original_total_salary", String.class);
        SENSITIVE_FIELDS.put("current_total_salary", String.class);
        SENSITIVE_FIELDS.put("original_contract_salary", String.class);
        SENSITIVE_FIELDS.put("current_contract_salary", String.class);
        SENSITIVE_FIELDS.put("original_base_salary", String.class);
        SENSITIVE_FIELDS.put("original_job_salary", String.class);
        SENSITIVE_FIELDS.put("original_other_salary", String.class);
        SENSITIVE_FIELDS.put("current_base_salary", String.class);
        SENSITIVE_FIELDS.put("current_job_salary", String.class);
        SENSITIVE_FIELDS.put("current_other_salary", String.class);
        SENSITIVE_FIELDS.put("original_monthly_standard_salary", String.class);
        SENSITIVE_FIELDS.put("current_monthly_standard_salary", String.class);
        SENSITIVE_FIELDS.put("id_number", String.class);
        SENSITIVE_FIELDS.put("other_salary", BigDecimal.class);

        // 兼容一下小驼峰式的这种写法，因为自定义xml方式+map类型参数时，这个key可能是下划线式，也可能是小驼峰式
        HashMap<String, Class<?>> snakeTypeSensitiveField = new HashMap<>();
        for (Map.Entry<String, Class<?>> entry : SENSITIVE_FIELDS.entrySet()) {
            String key = entry.getKey();
            Class<?> value = entry.getValue();

            String snakeCase = CryptUtil.convertToCamelCaseIfNecessary(key);
            if (StrUtil.equals(key, snakeCase)) {
                continue;
            }
            snakeTypeSensitiveField.put(snakeCase, value);
        }
        if (MapUtil.isNotEmpty(snakeTypeSensitiveField)) {
            SENSITIVE_FIELDS.putAll(snakeTypeSensitiveField);
        }

        return SENSITIVE_FIELDS.keySet();

    }

}
